using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using AccesoDatos;
using Entidades;

namespace Negocio.Negocio
{
    // Clase Negocio
    public class ServicioPaquete
    {
        #region Metodos publicos

        // Devuelve la lista servicios x paquete
        public DataTable ListaServiciosPaquete(String CodigoPaquete)
        {
            try
            {
                SqlHelper oSql = new SqlHelper();
                RutinasGenericas oRutGen = new RutinasGenericas();

                // Seteo de valores para el criterio
                int iCriterio;
                if (CodigoPaquete == "")
                {
                    iCriterio = 0; // Valor por defecto para buscar a todos
                }
                else iCriterio = 1;

                String iCodigoPaquete = CodigoPaquete == "" ? "0" : CodigoPaquete;
                
                Object[,] parmSP = { 
                    {"@iCriterio", SqlDbType.Int, 4, iCriterio},
                    {"@iPaqueteID", SqlDbType.Int, 4, iCodigoPaquete}
                    
                };

                return oSql.ExecSPReturnDataTable(oRutGen.CadenaConexion(), "UP_VTA_SEL_ServicioXpaquete", parmSP);
            }
            catch (Exception ex)
            {
                throw new Exception("ListaServicioXpaquete() - Negocio " + ex.Message);
            }
        }

        // Inserta una servicio x paquete
        public int InsertaServicioPaquete(Entidades.ServicioPorPaquete servicioPaquete)
        {
            try
            {
                SqlHelper oSql = new SqlHelper();
                RutinasGenericas oRutGen = new RutinasGenericas();

                Object[,] parmSP = { 
                    {"@rCantidadServicio", SqlDbType.Int, 4, servicioPaquete.Cantidad},
                    {"@iPaqueteID", SqlDbType.Int, 4, servicioPaquete.CodigoPaquete},
                    {"@iCodigoServicio", SqlDbType.Int, 4, servicioPaquete.CodigoServicio},
                 };

                return (int)oSql.ExecSPReturnEscalar(oRutGen.CadenaConexion(), "UP_VTA_INS_ServicioXpaquete", parmSP);
            }
            catch (Exception ex)
            {
                throw new Exception("InsertaServicioPaquete() - " + ex.Message);
            }
        }

        // Actualiza Servicio x Paquete
        public int EditaServicioPaquete(Entidades.ServicioPorPaquete servicioPaquete)
        {
            try
            {
                SqlHelper oSql = new SqlHelper();
                RutinasGenericas oRutGen = new RutinasGenericas();

                Object[,] parmSP = { 
                    {"@rCantidadServicio", SqlDbType.Int, 4, servicioPaquete.Cantidad },
                    {"@iPaqueteID", SqlDbType.Int, 4, servicioPaquete.CodigoPaquete },
                    {"@iCodigoServicio", SqlDbType.Int, 4, servicioPaquete.CodigoServicio }

                 };

                return (int)oSql.ExecSPReturnEscalar(oRutGen.CadenaConexion(), "UP_VTA_UPD_ServicioXpaquete", parmSP);
            }
            catch (Exception ex)
            {
                throw new Exception("ActualizaServicioPaquete() - " + ex.Message);
            }
        }

        // Elimina un servicio Paquete
        public int EliminaServicioPaquete(Entidades.ServicioPorPaquete servicioPaquete)
        {
            try
            {
                SqlHelper oSql = new SqlHelper();
                RutinasGenericas oRutGen = new RutinasGenericas();

                Object[,] parmSP = { 
                    {"@iPaqueteID", SqlDbType.Int, 4, servicioPaquete.CodigoPaquete},
                    {"@iCodigoServicio", SqlDbType.Int, 4, servicioPaquete.CodigoServicio},
                };

                return (int)oSql.ExecSPReturnEscalar(oRutGen.CadenaConexion(), "UP_VTA_DEL_ServicioXpaquete", parmSP);
            }
            catch (Exception ex)
            {
                throw new Exception("EliminaServicioPaquete() - " + ex.Message);
            }
        }

        public DataTable ListaServicios()
        {

            try
            {
                SqlHelper oSql = new SqlHelper();
                RutinasGenericas oRutGen = new RutinasGenericas();

                return oSql.ExecSPReturnDataTable(oRutGen.CadenaConexion(), "UP_VTA_SEL_ServicioCombo");
            }
            catch (Exception ex)
            {
                throw new Exception("ListaServicio() - " + ex.Message);
            }
        }

        public DataTable ListaPaquetes()
        {

            try
            {
                SqlHelper oSql = new SqlHelper();
                RutinasGenericas oRutGen = new RutinasGenericas();

                return oSql.ExecSPReturnDataTable(oRutGen.CadenaConexion(), "UP_VTA_SEL_PaqueteCombo");
            }
            catch (Exception ex)
            {
                throw new Exception("ListaPaquetes() - " + ex.Message);
            }
        }

        #endregion
    }
}
